package com.pac.file.service;

import java.io.File;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.common.annotation.PageSeparate;
import com.common.util.LogicException;
import com.pac.file.bean.FileBean;

/**
 * 文件管理service
 * 
 * @author chenlujun
 * @version [版本号, 2014年11月8日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface FileService {
	/**
	 * 上传文件
	 * 
	 * @param file
	 *            要上传的文件
	 * @param originalName
	 *            文件原名
	 * @param path
	 *            上传到的路径
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public FileBean uploadFile(File file, String originalName, String path)
			throws LogicException;

	/**
	 * 删除文件
	 * 
	 * @param fileBean
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public boolean delFile(FileBean fileBean) throws LogicException;

	/**
	 * 列表查询
	 * 
	 * @param fileBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	@PageSeparate
	public List<FileBean> queryFile(FileBean fileBean);

	/**
	 * 查询单个文件信息
	 * 
	 * @param fileBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public FileBean findFile(FileBean fileBean);

	/**
	 * 文件上传直接处理multipartFile对象
	 * 
	 * @param multipartFile
	 *            上传的文件对象
	 * @param filePath
	 *            文件保存的对象
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public FileBean uploadMultipartFile(MultipartFile multipartFile,
			String filePath);

	/**
	 * 从其他网站通过url下载图片，保存到服务中
	 * 
	 * @param url
	 * @param filePath
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public FileBean uploadFile(String url, String filePath);

	/**
	 * 上传图片
	 * 
	 * @param file
	 *            要上传的文件
	 * @param originalName
	 *            文件原名
	 * @param path
	 *            上传到的路径
	 * @param imgCompress
	 *            图片是否压缩 true :需要压缩 false：不需要压缩
	 * @param imgWidth
	 *            图片宽度
	 * @param imgHeight
	 *            图片高度
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public FileBean uploadImg(File file, String originalName, String path,
			boolean imgCompress, int imgWidth, int imgHeight)
			throws LogicException;
}
